开发环境搭建
1. 板子硬件连接¶
1.1. SSC009A主板示意图¶
电源: DC 12V
调试串口: TTL电平,特率115200
图1-1
SPI-NOR 启动的jumper配置:
图1-2
SPI-NAND启动的Jumper配置:
图1-3
1.2. SSC009B主板示意图¶
图1-4
SPI-NOR启动的Jumper配置:
图1-5
SPI-NAND启动的Jumper配置
图1-6
2. 准备编译环境¶
通常以交叉编译的方式进行开发和调试,即"宿主机+目标机"的形式。而宿主机和目标机的连接一般采用串口连接或网络连接,如下图所示:
图2-1交叉编译连接方式
注:提供的debug tool作用为读寄存器和烧写Mboot。
2.1. 安装Linux服务器¶
建议使用Ubuntu 16.06(64bit)。
2.2. 安装交叉编译工具¶
提供编译工具链gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux用于编译glibc版本的mi和kernel, boot,arm-buildroot-linux-uclibcgnueabihf-4.9.4用于uclibc版本,工具链一般打包在SDK开发包中,或者请找FAE获取。
3. 编译¶
本芯片支持nor flash和spi nand flash两种启动方式,因此在SDK中编译有所区分,通过不同的配置文件来实现,SDK中包含了最新的boot和kernel的image,并且脚本打包成可烧录的image。
3.1. 编译boot¶
-
SPI-NOR package
#declare -x ARCH="arm" # declare -x CROSS\_COMPILE="$compiler" //exp: uclibc "arm-buildroot-linux-uclibcgnueabihf-" # make infinity6b0_defconfig; #make clean; #make
-
SPI-NAND package
#declare -x ARCH="arm" # declare -x CROSS_COMPILE="$compiler" //exp: uclibc "arm-buildroot-linux-uclibcgnueabihf-" # make infinity6b0_spinand_defconfig; #make clean; #make
-
Get image
# cp u-boot.xz.img.bin ${ your_release_path }// 选择spi-nor时 # cp u-boot_spinand.xz.img.bin ${ your_release_path }// 选择spi-nand时
3.2. 编译kernel¶
-
SPI-NOR Kernel (ASIC)
表3-1
CHIP Glibc compiler Uclibc compiler Kernel make config DTS QFN88 64MB: SSC333 SSC335 SSC337 Linaro Glibc8.2.1 arm-linux-gnueabihf- Buildroot Uclibc 4.9.4 arm-buildroot-linux-uclibcgnueabihf- infinity6b0_ssc009a_s01a_defconfig infinity6b0-ssc009a-s01a.dts QFN128 128MB: SSC335DE SSC337DE Linaro Glibc8.2.1 arm-linux-gnueabihf- Buildroot Uclibc 4.9.4 arm-buildroot-linux-uclibcgnueabihf- infinity6b0_ssc009b_s01a_defconfig infinity6b0-ssc009b-s01a.dts -
SPI-NAND Kernel (ASIC)
表3-2
CHIP | Glibc compiler | Uclibc compiler | Kernel make config | DTS |
---|---|---|---|---|
QFN88 64MB: SSC333 SSC335 SSC337 | Linaro Glibc8.2.1 arm-linux-gnueabihf- | Buildroot Uclibc 4.9.4 arm-buildroot-linux-uclibcgnueabihf- | infinity6b0_ssc009a_s01a_spinand_defconfig | infinity6b0-ssc009a-s01a.dts |
QFN128 128MB: SSC335DE SSC337DE | Linaro Glibc8.2.1 arm-linux-gnueabihf- | Buildroot Uclibc 4.9.4 arm-buildroot-linux-uclibcgnueabihf- | infinity6b0_ssc009b_s01a_spinand_defconfig | infinity6b0-ssc009b-s01a.dts |
注:请参考表格和你的芯片版本做对应的编译。
# declare -x ARCH="arm" # declare -x CROSS_COMPILE="$compiler" //exp: uclibc "arm-buildroot-linux-uclibcgnueabihf-" # make xxx_kernel_make_config //exp: make infinity6b0_ssc009b_s01a_spinand_defconfig # make clean; # make
- Get image
# cp arch/arm/boot/uImage.xz ${ your_release_path }
3.3. 编译SDK(ALKAID)¶
-
SPI-NOR flash package
表3-3
CHIP Glibc Uclibc QFN88 64MB: SSC333 SSC335 SSC337 nor.glibc-squashfs.009a.64.qfn88 nor.uclibc-squashfs.009a.64.qfn88 QFN128 128MB: SSC335DE SSC337DE nor.glibc-squashfs.009b.128.qfn128 nor.uclibc-squashfs.009b.128.qfn128 -
SPI-NAND flash package
表3-4
CHIP Glibc Uclibc QFN88 64MB: SSC333 SSC335 SSC337 spinand.glibc-squashfs.009a.64.qfn88 spinand.uclibc-squashfs.009a.64.qfn88 QFN128 128MB: SSC335DE SSC337DE spinand.glibc-squashfs.009b.128.qfn128 spinand.uclibc-squashfs.009b.128.qfn128
注:请参考表格和你的芯片版本做对应的编译。
# cd $/{Alkaid}/project # . /setup_config.sh xxx_alkaid_build_config //exp: . /setup_config.sh./configs/ipc/i6/nor.glibc-squashfs.009a.128.qfn88 # make image
- Get image
# cd \${Alkaid}/project/image/output/images
4. 烧写¶
4.1. Burning code by uboot¶
- Run tftp (FTP server) on PC
Step1. 使用tftp工具指向image path:SDK\project\image\output\images\,并选择正确的网卡。
图4-1
Step 2. 连接板子的网口到PC端,连接debug串口工具到PC端,并检查连接的正确性。
- Run tftp (FTP Client) on EVB
Step 1. 板子开机,长按回车,进入bootloader command line. Mstar 的boot loader。
- 首次烧录请设置IP:(除非ip设置变更或者更換flash)
# set -f gatewayip 192.168.1.1 # set -f ipaddr 192.168.1.127 //设定FTP Client (EVB板子)使用的IP # set -f netmask 255.255.255.0 # set -f serverip 192.168.1.100//设定FTP server (PC) 的IP # saveenv
注:
-
为了保证烧录顺利,请保证PC和开发板处于同一网段。
-
请采用静态方式固定分配ip。防止烧录时ip地址跳变。
-
您也可以使用独立网卡使PC端直连开发板,固定该网卡的内网ip地址,并按上述方法设定开发板。
-
在UBOOT console下执行以下指令即可自动透过ethernet烧录。
# estar (OR: estar auto_update.txt)
4.2. Burning uboot by ISP Tool¶
本方式适用于空机烧录,或者uboot已经损坏导致无法通过uboot升级的场合。
注:必须使用我们专用的ISP TOOL工具,工具途径请咨询我们的FAE提供
4.2.1. SPI-NOR-Flash¶
-
Default Partition layout
表4-1
No range size IPL 0x00000000, 0x00010000 64KB IPL_CUST 0x00010000, 0x00020000 64KB MXPT 0x00020000, 0x00030000 64KB UBOOT 0x00030000, 0x0004F000 124KB UBOOT_ENV 0x0004F000, 0x00050000 4KB BOOT 0x00000000, 0x00050000 320KB KERNEL 0x00050000, 0x00250000 2048KB ROOTFS 0x00250000, 0x00650000 4096KB NVRSERVICE 0x00650000, 0x00950000 3072KB CUSTOMER 0x00950000, 0x006B0000 6848KB
注意:
以上是默认的分区配置,在项目开发的过程或者不同的项目上,分区很可能会不同。实际使用的分区请参考编译镜像中的image/partition_layout.txt。
-
Burning code by ISP tool
表4-2
offset Binary放置目录 IPL.bin 0x0000 ${ALKAID}\project\image\output\images\IPL.bin IPL_CUST.bin 0x10000 ${ALKAID}\project\image\output\images\IPL_CUST.bin MXP_SF.bin 0x20000 ${ALKAID}\project\image\output\images\MXP_SF.bin u-boot.xz.img.bin 0x30000 ${ALKAID}\project\image\output\images\u-boot.xz.img.bin -
Burning Steps
-
Step1. 执行ISP tool。并且关闭UART terminal,否则无法正常'Connect'。
-
Step2. 选择SPI tab, 点击'More' 并且选择类型为'SPI'。
图4-2
-
Step3. 加载烧录文件并点击'Connect'。
图4-3
-
Step4. 加载image "IPL.bin",并点击'Run'。
注:烧写IPL 的时候,推荐all chip。之后烧写可改成erase file。
图4-4
-
Step5. 加载 image "IPL_CUST.bin", 取消'Erase Device'选项。设置'Base shift 'at 0x10000。
注:可能随着版本变化,Base shift的地址以表格1-2数据为准。
图4-5
-
Step6. 加载image "MXP_SF.bin", 设置'Base shift 'at 0x20000。
图4-6
-
Step7. 加载image "u-boot.xz.img.bin" , 设置'Base shift 'at 0x30000。
图4-7
-
Step8. 重启EVB板子,关闭工具。
-
4.2.2. SPI-NAND Flash¶
-
Default Partition layout
表4-3
No range size CIS 0x00000000-0x00020000 128KB IPL0 0x00140000-0x00200000 768KB IPL_CUST0 0x00200000-0x00260000 384KB IPL_CUST1 0x00260000-0x002c0000 384KB UBOOT0 0x002c0000-0x00320000 384KB UBOOT1 0x00320000-0x00380000 384KB ENV 0x00380000-0x003c0000 256KB KERNEL 0x003c0000-0x008c0000 5120KB RECOVERY 0x008c0000-0x00dc0000 5120KB rootfs 0x00dc0000-0x013c0000 6144KB UBI 0x0013c0000-0x008000000 110848KB
注意:
-
以上是默认的分区配置,在项目开发的过程或者不同的项目上,分区很可能会不同。实际使用的分区请参考编译镜像中的image/partition_layout.txt。
-
Burning code by ISP tool
-
ISP Tool Version
请确定 ISP Tool 版本为V5.0.3.23091b(beta)。
ISP Tool会在首次版本发布的时候一起打包在Tool目录下。
-
Images list
表4-4
Offset Image所在目录 GCIS.bin 0x000000 project\image\output\images\ GCIS.bin IPL.bin 0x140000 project\image\output\images\IPL.bin IPL_CUST.bin 0x200000 project\image\output\images\IPL_CUST.bin u-boot_spinand.xz.img.bin 0x2C0000 project\image\output\images\ u-boot_spinand.xz.img.bin -
Burning Steps
-
Step1. 执行ISP tool。并且关闭UART terminal,否则可能无法正常'Connect'。
图4-8
-
Step2. 选择SPI tab, 点击'More' 并且选择类型为'SPINAND'。
图4-9
-
Step3. 加载烧录文件并点击'Connect'。
图4-10
-
Step4. 加载image "GCIS.bin",并点击'Run'
注:需要勾选' erase all chip'
图4-11
-
Step5. 加载 image "IPL.bin", 取消'Erase Device'选项, 设置'Base shift 'at 0x140000。
图4-12
-
Step6. 加载image "IPL_CUST.bin", 设置'Base shift 'at 0x200000。
图4-13
-
Step7. 加载image "u-boot_spinand.xz.img.bin" , 设置'Base shift 'at 0x2C0000。
图4-14
-
Step8. 重启EVB板子,关闭工具。
-
4.3. Burning code by SD卡¶
-
制作SD卡软件升级包,在3.3 编译SDK(ALKAID)编译好image的基础上,执行如下命令:
# cd $/{Alkaid}/project # ./make_sd_upgrade_sigmastar.sh
(在出现的提示中全部输入”y”)
-
将{Alkaid}\project\image\output\images中的如下两个文件拷贝到SD卡:
-
SigmastarUpgradeSD.bin
-
upgrade_script.txt
-
-
将SD卡从PC端弹出并插入到板子的卡槽中,板子上电开机,长按回车,进入bootloader command line,执行如下命令进行SD卡升级:
# sdstar
PS:可以通过如下命令设置环境变量,以后只要有SD卡和升级包即可自动升级,不用再敲升级命令:
setenv sdautoupgrade 1;saveenv
5. 常见异常处理¶
5.1. 连接ISP tool时,提示”Connected, but no SPI flash found”¶
这种异常是针对板子中已有程序的情形。
图5-1
5.2. 解决方法¶
进入boot命令行,执行go 0x10,让程序跑死,然后再连接ISP tool,如图5-2所示:
图5-2